home *** CD-ROM | disk | FTP | other *** search
- ;;;;;;;;;;;;; RAW-PLAYER --> Programa principal! SB Only
- ;;;;; Navi Dj. 1997 PhyMosys
- ;;;;;;;;;;;;; Code 100% assembler (of course)
-
- .MODEL SMALL
- .STACK 512
- .386
- LOCALS @@
-
- .CODE
- INCLUDE PLAY.INC ; Incluimos las definiciones y funciones básicas.
-
- ;;;;; Pseudo-area de datos.
- Fichero DB 'prueba.wav',0 ; Fichero de pruebas.
- Handle DW 0 ; Handle de fichero.
- Tamanyo DW 0 ; Tamaño del fichero RAW.
- Msg1 DB 'ERROR: Se ha producido un error inesperado$'
-
- ;;;;; Código
- LeeRAW PROC ; Función para cargar el fichero en memoria.
- PUSH CS
- POP DS
- MOV AX, 3D00h
- MOV DX, Offset Fichero
- INT 21h ; Abrimos el fichero.
- JC @@ERROR ; Si hay algún error.
- MOV CS:[Handle], AX
-
- MOV BX, AX
- MOV AX, 4202h
- XOR CX, CX
- MOV DX, CX
- INT 21h ; Nos vamos al final.
- JC @@ERROR
- MOV CS:[Tamanyo], AX
-
- MOV BX, AX ; Pasamos la longitud a párrafos.
- SHR BX, 4
- INC BX
- MOV AH, 48h
- INT 21h ; Pedimos memoria.
- JC @@ERROR
- MOV DS, AX ; Guardamos en FS y DS el segmento.
- MOV FS, AX
-
- MOV BX, CS:[Handle]
- MOV AX, 4200h
- XOR CX, CX
- MOV DX, CX
- INT 21h ; Resituamos al inicio para leer.
-
- MOV CX, CS:[Tamanyo]
- MOV AH, 3Fh ; Vamos a leer.
- MOV BX, CS:[Handle]
- XOR DX, DX
- INT 21h ; Leemos...
- JC @@ERROR
- MOV AH, 3Eh
- MOV BX, CS:[Handle]
- INT 21h
- CLC
- RET ; Regresamos sin error.
- @@ERROR:MOV AH, 3Eh
- MOV BX, CS:[Handle]
- INT 21h
- STC
- RET ; Regresamos con error.
- LeeRAW ENDP
-
- MainPlay PROC ; Por aquí se empieza.
- CALL LiberaMEM
- ; Aquí deberia meterse la llamada a la función de
- ; detección de la SB (y sus parámetros).
- CALL ResetSB ; Resetea la SB.
- CALL LeeRAW ; Carga el fichero WAV.
- JC @@MsgERROR
-
- MOV AH, 0D1h ; Enviamos al DSP el código para
- CALL WriteDSP ; que encienda el speaker.
-
- XOR SI, SI
- MOV CX, CS:[Tamanyo]; Llamamos a la función para hacer
- CALL PlayRAW ; sonar el fichero.
-
- MOV AH, 0D3h ; Enviamos al DSP el código para
- CALL WriteDSP ; que se apague el speaker.
-
- @@Salir:MOV DX, 20h ; Reseteamos el servicio de
- MOV AL, 20h
- OUT DX, AL ; interrupciones.
-
- PUSH FS
- POP ES
- MOV AH, 49h ; Liberamos la memoria que habiamos
- INT 21h ; pedido.
- MOV AX, 4C00h
- INT 21h ; Salida al DOS.
-
- @@MsgERROR:
- PUSH CS
- POP DS
- MOV AH, 9
- MOV DX, Offset Msg1
- INT 21h ; Escribimos el mensaje de error.
- MOV AX, 4C00h
- INT 21h
- MainPlay ENDP
- END MainPlay
-